package com.fintech.common.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.fintech.common.entity.MaintenanceResult;
import com.marvels.common.utils.MarvelsLogUtil;

/**
 * 维护升级提示
 * 
 * @author tux
 *
 */
public class MaintenanceUtils {
	private static final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	/**
	 * 判断是否维护，如果维护，不能继续往下走<BR>
	 * result属性为true：维护<BR>
	 * result属性为false：不维护<BR>
	 * 
	 * @param keyPrefix
	 *            配置项前缀（keyPrefix.maintenance.starttime、keyPrefix.maintenance.
	 *            endtime）
	 * @return
	 */
	public static MaintenanceResult getMaintenance(String keyPrefix) {
		return getMaintenance("/application.properties", keyPrefix);
	}

	/**
	 * 判断是否维护，如果维护，不能继续往下走<BR>
	 * result属性为true：维护<BR>
	 * result属性为false：不维护<BR>
	 * 
	 * @param filePath
	 *            配置文件相对路径，前面要带/
	 * @param keyPrefix
	 *            配置项前缀（keyPrefix.maintenance.starttime、keyPrefix.maintenance.
	 *            endtime）
	 * @return
	 */
	public static MaintenanceResult getMaintenance(String filePath, String keyPrefix) {
		MaintenanceResult result = new MaintenanceResult();
		try {
			String maintenanceStartTime = PropertiesUtils.getString(keyPrefix + ".maintenance.starttime", filePath); // 维护起始时间
			String maintenanceEndTime = PropertiesUtils.getString(keyPrefix + ".maintenance.endtime", filePath); // 维护结束时间
			MarvelsLogUtil.getInstance().info("=====maintenanceStartTime:" + maintenanceStartTime);
			MarvelsLogUtil.getInstance().info("=====maintenanceEndTime:" + maintenanceEndTime);
			Date curDate = new Date();
			// 维护时间判断
			if (curDate.after(df.parse(maintenanceStartTime)) && curDate.before(df.parse(maintenanceEndTime))) {
				result.setMaintenance(true);
				result.setEndTime(maintenanceEndTime);
				return result;
			}
		} catch (Exception e) {
			// 如果出现异常，默认允许通过。
			MarvelsLogUtil.getInstance().error("时间转换出现异常", e);
		}
		return result;

	}

}
